// pages/classic/classic.js
import {ClassicModel} from '../../models/classic.js'
import {LikeModel} from '../../models/like.js'

//使用类的方法需要实例化类
let classicModel = new ClassicModel()
let likeModel = new LikeModel()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //data里面的数据wxml是可以直接拿到的
    classic:null,
    latest:true,
    first:false,
    //独立两个like组件中的likeStatus和likeCount这两个变量,需要在wxml中也要更换绑定的变量一一对应
    likeStatus:false,
    likeCount:0
  },

  /**
   * 生命周期函数--监听页面加载
   */

   //最新一期的期刊onLoad
  onLoad: function (options) {
    //使用classicModel注意与上面实例化的大小写一致
     classicModel.getLatest((res)=>{
      //  console.log(res)
         this.setData({//拿到服务器的数据做数据绑定就可以在wxml中使用，setData是做数据更新的
           classic:res,
           //直接在classic中更新like的状态的数字即可因为包括在classic中
           likeStatus:res.like_status,
           likeCount:res.fav_nums

         })
         console.log(this.data)
     })
  },

   onLike: function (event) {
      console.log(event)
      let behavior = event.detail.behavior//拿到like组件当前的状态
      //可通过上面的classic取得id和type
      likeModel.like(behavior, this.data.classic.id, this.data.classic.type)
   },

   onNext:function(event) {
     this._updateClassic('next')
   },

   onPrevious:function(event) {
    this._updateClassic('previous')
 },

     //定义一个私有的方法可以提取onNext和onPrevious中的公共代码,因为两个只有index不同
     _updateClassic:function(nextOrPrevious) {
      let index = this.data.classic.index
      classicModel.getClassic(index,nextOrPrevious,(res)=>{
       this._getLikeStatus(res.id,res.type)
      //  console.log(res),更新数据
       this.setData({
          classic:res,
          //根据数据更新动态更新latest和first
          latest:classicModel.isLatest(res.index),
          first:classicModel.isFirst(res.index)
        })
      })
     },

     //独立更新like组件的状态
     _getLikeStatus:function(artID,category){
         likeModel.getClassicLikeStatus(artID,category,(res)=>{
           this.setData({
            likeStatus:res.like_status,
            likeCount:res.fav_nums
           })
         })
     }

  })
